//间接方法
import {
  RECEIVE_ADDRESS,
  RECEIVE_CATEGORYS,
  RECEIVE_SHOPS,
  RECEIVE_USER_INFO,
  RESET_USER_INFO,
  RECEIVE_GOODS,
  RECEIVE_RATINGS,
  RECEIVE_INFO,
  INCREMENT_FOOD_COUNT,
  DECREMENT_FOOD_COUNT,
  CLEAR_CART,
  RECEIVE_SEARCH_SHOPS
  	
} from './mutations-types'
import {
  reqAddress,//获取地址信息(根据经纬度串)
  reqCategorys,//获取 msite 页面食品分类列表
  reqShops,//获取 msite 商铺列表
  reqUserInfo,//获取用户信息(根据会话)
  reqLogout,//请求登出
  reqShopRatings,//商家评价数组
  reqShopGoods,//商家商品数组
  reqShopInfo,//获取商家信息
  reqSearchShop//根据经纬度和关键字搜索商铺列表
  	
} from '../api'

export default {
	//异步获取地址
	async  getAddress({commit,state}){
		const geohash=state.latitude+','+state.longitude
		 var results=await reqAddress(geohash)
		// 2. 提交一个mutation
    	if (results.code === 0) {
      	const address = results.data
     	commit(RECEIVE_ADDRESS, {address})
    }
	},
	
	 // 异步获取商家列表
  async getShops({commit, state}) {
    // 对象的结构赋值
    const {longitude, latitude} = state
    // 发送异步ajax请求
    const result = await reqShops(longitude, latitude)
    // 提交一个mutation
    if (result.code === 0) {
      const shops = result.data
      commit(RECEIVE_SHOPS, {shops})
    }
  },
	
	  // 异步获取食品分类列表
  async getCategorys ({commit,state}) {
    // 发送异步ajax请求
    const result = await reqCategorys()
    // 提交一个mutation
    if (result.code === 0) {
      const categorys = result.data
      commit(RECEIVE_CATEGORYS, {categorys})
    }
  },
    // 异步获取用户信息
  async getUser({commit}) {
    // 发送异步ajax请求
    const result = await reqUserInfo()
    // 提交一个mutation
    if (result.code === 0) {
      const userInfo = result.data
      commit(RECEIVE_USER_INFO, {userInfo})
    }
  },

   // 同步记录用户信息
  recordUser ({commit}, userInfo) {
    commit(RECEIVE_USER_INFO, {userInfo})
  },
  // 异步获取用户信息
  async getUserInfo ({commit}) {
    const result = await reqUserInfo()
    if (result.code === 0) {
      const userInfo = result.data
      commit(RECEIVE_USER_INFO, {userInfo})
    }
  },
    // 异步登出
  async logout ({commit}) {
  	 commit(RESET_USER_INFO)
    const result = await reqLogout()
    if (result.code === 0) { commit(RESET_USER_INFO) }
  },
  // 异步获取商家信息
  async getShopInfo ({commit}) {
  	console.log(1);
    const result = await reqShopInfo()
    if (result.code === 0) {
      const info = result.data
      commit(RECEIVE_INFO, {info})
    }
  },
    // 异步获取商家评价列表
  async getShopRatings ({commit}, callback) {
    const result = await reqShopRatings()
    if (result.code === 0) {
      const ratings = result.data
      commit(RECEIVE_RATINGS, {ratings})
      // 数据更新了, 通知一下组件
      callback && callback()
    }
  },

  // 异步获取商家商品列表
  async getShopGoods ({commit}, callback) {
    const result = await reqShopGoods()
    if (result.code === 0) {
      const goods = result.data
      commit(RECEIVE_GOODS, {goods})
      // 数据更新了, 通知一下组件
      callback && callback()
    }
  },
  // 同步更新food中的count值
  updateFoodCount ({commit}, {isAdd, food}) {
    if (isAdd) {
      commit(INCREMENT_FOOD_COUNT, {food})
    } else {
      commit(DECREMENT_FOOD_COUNT, {food})
    }
  },
    // 同步清空购物车
  clearCart ({commit}) {
    commit(CLEAR_CART)
  }, 
   // 异步获取商家商品数组列表
  async searchShops ({commit, state}, keyword) {
    const geohash = state.latitude + ',' + state.longitude
    const result = await reqSearchShop(geohash, keyword)
    if (result.code === 0) {
      const searchShops = result.data
      commit(RECEIVE_SEARCH_SHOPS, {searchShops})
    }
  }
 
}